home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 26.zip / BS1 part 26 / Aztec C v5.2a disk 1.adf / read.me < prev    next >
Text File  |  1991-10-28  |  49KB  |  1,255 lines

  1.  
  2.  
  3.  
  4.                               Aztec C for the Amiga
  5.                                   Release notes
  6.                                    Version 5.2a
  7.                                      11/01/91
  8.  
  9.        This release document describes version 5.2a of Aztec C for the
  10.      Amiga. It's organized into the following sections:
  11.        1. Installation instructions, which describes how to install the
  12.           Aztec C files from the distribution disks onto your disks;
  13.        2. Disk contents, which describes what's on the distribution disks;
  14.        3. New features, which describes what's changed in going from
  15.           version 5.0d/e to v5.2a;
  16.        4. Additional documentation, which describes features that have been
  17.           added after the manual was last printed and before the v5.2
  18.           release.
  19.  
  20.  
  21.      1. Installation
  22.  
  23.        Aztec C v5.2a may be installed on either a dual-floppy drive or a
  24.      hard drive system. Single-floppy machines are not supported. To
  25.      install your package, from the CLI prompt type:
  26.           
  27.           execute df0:install
  28.  
  29.        This will start up an installation script, which will allow you to
  30.      choose between hard disk and dual-floppy installation.
  31.  
  32.      1.1 Hard Disk Installation
  33.  
  34.        If you choose hard disk installation, the install script will call
  35.      up the program 'AztecInstall'. This program displays a screen that
  36.      lets you customize the installation to suit your needs. As you make
  37.      your selections, keep track of the numbers on the bottom of the
  38.      screen: one displays the amount of storage required for the
  39.      installation, and the other displays the amount of storage available
  40.      on the selected drive.
  41.  
  42.        Once you've made your selections, press the "Begin Installation"
  43.      gadget to continue with the installation; or press the "Close Window"
  44.      gadget in the top left-hand corner to terminate the installation.
  45.  
  46.        After you click on "Begin Installation", insert the distribution
  47.      disks in df0: when prompted by the program.
  48.  
  49.        When the files are all installed to the hard disk, the program will
  50.      return to the main screen. You can then click on the "Close Window"
  51.      gadget stop the program. The installation script will then resume and
  52.      complete the installation.
  53.  
  54.        After the installation program is complete, you may then change
  55.      directories to your main Aztec directory.  From there, you should
  56.      type:
  57.           
  58.           execute Aztec.sh
  59.  
  60.        This shell file will then initialize your system for use with Aztec
  61.      C, which should be done each time you reboot the machine (for this
  62.  
  63.  
  64.  
  65.                                 page 1
  66.  
  67.  
  68. Aztec C/Amiga, v5.2a                                             11/1/91
  69.  
  70.      reason, you may wish to place the contents of the Aztec.sh file
  71.      directly in your 'Startup-Sequence' file). Your system will then be
  72.      installed, and you'll be ready to use Aztec C!
  73.  
  74.      1.1.1 Choices during hard disk installation
  75.  
  76.        The choices on the installation program's screen are organized into
  77.      the following areas:
  78.        -  "Destination Directories" choices, which let you select the
  79.           directories in which files will be placed on your hard disk;
  80.        -  "Copy ..." choices, which let you select the files that will be
  81.           installed;
  82.        -  "Library options" choices, which let you select the attributes of
  83.           the installed libraries (i.e. memory model, int size, and math
  84.           type).
  85.  
  86.        The following paragraphs describe these choices.
  87.  
  88.      1.1.1.1 Choices in the 'Destination directories' screen area
  89.  
  90.      1.1.1.1.1 The 'Device' buttons
  91.  
  92.         The up- and down-arrow Device buttons are used to identify the
  93.      device (dh0:, work:, etc.) to which the installation program will copy
  94.      the Aztec files. As you click on these buttons, the names of the
  95.      available devices are displayed next to the device name.
  96.  
  97.      1.1.1.1.2 The 'Root directory' text box
  98.  
  99.        The "Root" text box identifies your root Aztec directory. The
  100.      installation program will create subdirectories of beneath this main
  101.      directory, and place Aztec files in these subdirectories.  For
  102.      example, there will be subdirectories for executable programs, include
  103.      files, libraries, and so on.
  104.  
  105.        The installation program will also create a script file, named
  106.      Aztec.sh, in the main Aztec directory. This file is described below.
  107.  
  108.        The name of the root Aztec directory defaults to 'Aztec'.
  109.  
  110.      1.1.1.1.3 The 'Programs directory' text box
  111.  
  112.        The "Programs" text box identifies the directory into which the
  113.      installation program will place all executable Aztec programs. This
  114.      directory must be a subdirectory of the root Aztec directory. The name
  115.      of this subdirectory defaults to 'bin'.
  116.  
  117.      1.1.1.1.4 The 'Include directory' text box
  118.  
  119.        The "Includes" text box identifies the directory into which the
  120.      installation program will place all C include files. Some include
  121.      files will be placed in this directory, and some in subdirectories of
  122.      it. This directory must be a subdirectory of the root Aztec directory.
  123.      The name of this subdirectory defaults to 'include'.
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.                                 page 2
  132.  
  133.  
  134. Aztec C/Amiga, v5.2a                                             11/1/91
  135.  
  136.      1.1.1.1.5 The 'Libraries directory' text box
  137.  
  138.        The "Libraries" text box identifies the directory into which the
  139.      installation program will place all object module libraries. This
  140.      directory must be a subdirectory of the root Aztec directory. The name
  141.      of this subdirectory defaults to 'lib'.
  142.  
  143.        Several subdirectories of this directory may be created, depending
  144.      on what you've chosen to install:
  145.        -  Object module libraries are placed in the 'libs' subdirectory;
  146.        -  Amiga FD's are placed in the 'fd' subdirectory;
  147.        -  Library source is placed in other subdirectories.
  148.  
  149.      1.1.1.2 Choices in the 'Copy...' screen area
  150.  
  151.        The Copy... area of the screen contains check boxes that you check
  152.      to select items that you want to install. The following paragraphs
  153.      describe these check boxes.
  154.  
  155.      1.1.1.2.1 The 'Programs' check box
  156.  
  157.        If this box is checked, the installation program will install all
  158.      executable programs.
  159.  
  160.      1.1.1.2.2 The 'C Includes' check box
  161.  
  162.        If this box is checked, the installation program will install all C
  163.      include files.
  164.  
  165.      1.1.1.2.3 The 'C Libs' check box
  166.  
  167.        If this box is checked, the installation program will install the
  168.      non-floating point Aztec object module libraries that  have the
  169.      attributes that you specify in the "Library options" screen area.
  170.  
  171.      1.1.1.2.4 The 'Math libs' check box
  172.  
  173.        If this box is checked, the installation program will install the
  174.      floating point Aztec object module libraries that  have the attributes
  175.      that you specify in the "Library options" screen area.
  176.  
  177.      1.1.1.2.5 The 'Lib source' check box
  178.  
  179.        If this box is checked and if you've purchased the source to the
  180.      Aztec library routines, the installation program will install this
  181.      source.
  182.  
  183.      1.1.1.2.6 The 'Examples' check box
  184.  
  185.        If this box is checked, the installation program will install the
  186.      following source code:
  187.        -  Example programs source, to subdirectories of the 'examples'
  188.           subdirectory of the root Aztec directory;
  189.        -  Source for a sample resident library, to the 'res_lib'
  190.           subdirectory of the root Aztec directory;
  191.        -  Source for the Aztec startup modules, to the 'startups'
  192.           subdirectory of the root Aztec directory.
  193.  
  194.  
  195.  
  196.  
  197.                                 page 3
  198.  
  199.  
  200. Aztec C/Amiga, v5.2a                                             11/1/91
  201.  
  202.      1.1.1.2.7 The 'ARP files' check box
  203.  
  204.        If this box is checked, the installation program will install files
  205.      related to the arp.library on the 'arp' subdirectory of the root Aztec
  206.      directory.
  207.  
  208.      1.1.1.2.8 The 'Amiga asm includes' check box
  209.  
  210.        If this box is checked, the installation program will install
  211.      assembly language include files from Commodore-Amiga on the 'inc-asm'
  212.      subdirectory of the root Aztec directory.
  213.  
  214.      1.1.1.2.9 The 'Amiga FD files' check box
  215.  
  216.        If this box is checked, the installation program will install FD
  217.      files from Commodore-Amiga on the 'fd' subdirectory of the Aztec
  218.      library directory.
  219.  
  220.      1.1.1.2.10 The 'Amiga libraries' check box
  221.  
  222.        If this box is checked, the installation program will install object
  223.      module libraries from Commodore-Amiga, such as amiga.lib, in the
  224.      'libs' subdirectory of the Aztec library directory.
  225.  
  226.      1.1.1.3 Choices in the 'Library Options' screen area
  227.  
  228.        The 'Library options' section of the installation program's screen
  229.      allows you to select the attributes of the libraries that you want
  230.      installed. The selectable attributes are:    
  231.        -  Large code and large data memory model;
  232.        -  Small code and small data memory model;
  233.        -  16-bit ints;
  234.        -  32-bit ints;
  235.        -  Manx IEEE floating point;
  236.        -  Amiga FFP floating point;
  237.        -  Amiga IEEE floating point;
  238.        -  68881 floating point.
  239.  
  240.        These features are described in detail in the Aztec C Reference
  241.      Manual.
  242.  
  243.      1.2 Floppy disk installation
  244.  
  245.        The two-drive floppy disk installation is handled jointly by the
  246.      'install' script and the program 'AztecInstall'. Two blank disks are
  247.      required for this installation. The installation script will
  248.      automatically prepare these two disks, so you don't have to format
  249.      them before beginning the installation. However, please insure that
  250.      nothing of importance is contained on either of these disks, as all
  251.      information on them will be lost during the installation process.
  252.  
  253.        The floppy installation script will first prompt you whether or not
  254.      your second floppy drive is designated as 'df1:'. If you own an Amiga
  255.      1000 or Amiga 500 system with an external floppy drive, you should
  256.      answer 'yes' to this question. If you own an Amiga 2000 or 2500 with
  257.      one internal and one external drive, than the answer to this question
  258.      should be 'no'. This is because the external drive designation on 2000
  259.      and 2500 systems is 'df2:' instead of the usual 'df1:'. If your 2000
  260.  
  261.  
  262.  
  263.                                 page 4
  264.  
  265.  
  266. Aztec C/Amiga, v5.2a                                             11/1/91
  267.  
  268.      or 2500 has 2 internal floppies, then you should answer 'yes', as the
  269.      second internal drive is considered 'df1:'.
  270.  
  271.        The script will then copy the first Aztec distribution disk to your
  272.      first blank floppy, and prepare it for normal booting.
  273.  
  274.        The script will then prompt you for the second blank disk. When you
  275.      insert the disk, the script will format the disk, giving it the name
  276.      'Az2:'.
  277.  
  278.        After formatting the second disk, the install script will then
  279.      invoke the 'AztecInstall' program, passing it a special option, -f,
  280.      which tells it that this is an installation to a floppy disk.
  281.  
  282.        AztecInstall will allow you to choose which libraries you wish to
  283.      install  on your disks. By looking at the "space needed" and "space
  284.      available" items, make sure you don't choose more libraries than will
  285.      fit on the Az2 diskette. When you have chosen your libraries, click
  286.      'Begin Installation'. The  program will then prompt you for the Aztec
  287.      distribution disks, starting with disk 2, which should be placed in
  288.      your first floppy drive (df0:).
  289.  
  290.        When installation is complete, you should reboot your system with
  291.      the new disk 1 in your first floppy drive, and the second disk in the
  292.      second drive. After the system boots, you are ready to go!
  293.  
  294.      1.3 Restarting the installation program
  295.  
  296.        If you want, you can install the Aztec components in stages by
  297.      rerunning the AztecInstall program that's on the first distribution
  298.      disk. For example, during the initial installation, you might install
  299.      just the programs, include files, and libraries. Later, you could
  300.      install the example files by restarting AztecInstall and specifying
  301.      that you just want to install the example files.
  302.  
  303.      1.4 Bypassing the installation program
  304.  
  305.        Most of the files on the distribution disks are in standard lharc or
  306.      zoo archive format. So if you want, you can bypass the installation
  307.      program altogether and dearchive the archive files that are on the
  308.      distribution disks using the lharc and zoo programs that are provided
  309.      with Aztec C. These archive programs are installed in the Aztec root
  310.      directory's 'bin' subdirectory; these programs, and documentation on
  311.      how to use them, are also on distribution disk 2.
  312.  
  313.        One thing to note if you're doing a manual installation: if you're
  314.      installing the C include files, you must install the Commodore-Amiga
  315.      include files that are in 204inc_h.lzh on disk 4 before installing the
  316.      Aztec include files that are in incl52.lzh on disk 4. That's because
  317.      incl52.lzh may provide alternate versions of some Commodore-Amiga
  318.      include files.
  319.  
  320.      1.5 Creating libraries from source
  321.  
  322.        Once you've dearchived the library source, you can build libraries
  323.      by cd'ing into the lib subdirectory of the root Aztec directory and
  324.      invoking the 'make' program, passing to it a code that identifies what
  325.      you want to make. the codes are:
  326.  
  327.  
  328.  
  329.                                 page 5
  330.  
  331.  
  332. Aztec C/Amiga, v5.2a                                             11/1/91
  333.  
  334.           Code   Library
  335.           all    All libraries
  336.           c      All C libraries
  337.           m      All Manx IEEE math libraries
  338.           ma     All Amiga IEEE math libraries
  339.           mf     All Amiga FFP math libraries
  340.           m8     All 68881 math libraries
  341.           s      All S (screen) libraries
  342.           
  343.           css    c16.lib (16-bit ints, small code&data)
  344.           cls    c.lib (32-bit ints, small code&data0
  345.           csl    cl16.lib (16-bit ints, large code&data0
  346.           cll    cl.lib (32-bit ints, large code&data)
  347.           
  348.           mss    m16.lib
  349.           mls    m.lib
  350.           msl    ml16.lib
  351.           mll    ml.lib
  352.           
  353.           mass   ma16.lib
  354.           mals   ma.lib
  355.           masl   mal16.lib
  356.           mall   mal.lib
  357.           
  358.           mfss   mf16.lib
  359.           mfls   mf.lib
  360.           mfsl   mfl16.lib
  361.           mfll   mfl.lib
  362.           
  363.           m8ss   m816.lib
  364.           m8ls   m8.lib
  365.           m8sl   m8l16.lib
  366.           m8ll   m8l.lib
  367.  
  368.        In addition, you can invoke make with the following codes to delete
  369.      selected object modules:
  370.           Code      Object modules to delete
  371.           all_clean All object modules (but not the libraries)
  372.           c_clean   All c library object modules
  373.           m_clean   All Manx IEEE object modules
  374.           ma_clean  All Amiga IEEE object modules
  375.           mf_clean  All Amiga FFP object modules
  376.           m8_clean  All 68881 object modules
  377.           s_clean   All s library object modules
  378.  
  379.        In order to get around a problem with the Aztec MAKE command when
  380.      running on Amiga DOS 2.0, a problem that occurs when building the
  381.      libraries, we have included the Amiga DOS 1.3 CD command file in the
  382.      bin subdirectory of the root Aztec directory. When a version of MAKE
  383.      is available that cures this problem, you can delete the CD command
  384.      file from the bin directory. The problem is this: when MAKE encounters
  385.      a CD command in the library makefile, it tries to execute a CD command
  386.      file; this was correct for AmigaDOS 1.3, but not for AmigaDOS 2.0,
  387.      since the code for this command is built into the AmigaDOS 2.0 shell.
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.                                 page 6
  396.  
  397.  
  398. Aztec C/Amiga, v5.2a                                             11/1/91
  399.  
  400.      2. Contents of distribution disks
  401.  
  402.        The following paragraphs describe the files that are on the Aztec
  403.      distribution disks.
  404.  
  405.      2.1 Disk 1 contents
  406.  
  407.        Disk 1 is bootable, containing standard AmigaDOS 1.3 files. The only
  408.      Aztec files it contains are the 'include' directory. This directory
  409.      contains versiqon 5.2 of the the Aztec include files, version 1.3 of
  410.      the Commodore-Amiga include files, and a functions.h file that
  411.      contains prototypes for the Commodore-Amiga v1.3 functions. These
  412.      include files are only used by floppy-based installations.
  413.  
  414.        As described below, for hard disk-based installations, the Amiga
  415.      v2.0 include files are always used, even when developing programs that
  416.      only run on v1.3 of the Amiga OS. The reason why the v2.0 Amiga
  417.      include files weren't used for a floppy-based installation is that
  418.      they require much more disk space than the v2.0 include files.
  419.  
  420.      2.2 Disk 2 contents
  421.           File           Contents
  422.           as52.lzh       as: the assembler
  423.                          changes.as: log of changes to 'as'
  424.           cc52.lzh       cc, the compiler
  425.                          changes.cc: log of changes to 'cc'
  426.           ln52.lzh       ln: the linker
  427.                          changes.ln: log of changes to 'ln'
  428.           examples.lzh   Source to example programs
  429.           prog52.lzh     All other programs
  430.                          changes.tools: log of changes
  431.           reslib52.lzh   Source for resident library example
  432.           start52.lzh    Source for startup routines
  433.           lharc          lharc program
  434.           lharc.changes  New features of lharc
  435.           lharc.doc      Documentation on lharc
  436.           zoo            zoo program
  437.           zoo.doc        Documentation on zoo
  438.  
  439.        In addition, developer versions of Aztec C contain the following
  440.      file:
  441.           dev52.lzh      Developer-only programs: make, grep, diff, sdb,
  442.                          and sdbf
  443.  
  444.      2.3 Disk 3 contents
  445.           File           Contents
  446.           arp#?          ARP files
  447.           lib16_52.lzh   The following libraries and object modules that
  448.                          use small code&data and 16-bit ints: c16.lib,
  449.                          m16.lib, and detach.oss (detach object module);
  450.                          changes.lib: Changes to library routines.
  451.           lib52.lzh      The following libraries and object modules that
  452.                          use small code&data and 32-bit ints: c.lib, m.lib,
  453.                          and detach.ols (detach object module);
  454.                          changes.lib: Changes to library routines.
  455.           lib16l52.lzh   The following libraries and object modules that
  456.                          use large code&data and 16-bit ints: c16.lib,
  457.  
  458.  
  459.  
  460.  
  461.                                 page 7
  462.  
  463.  
  464. Aztec C/Amiga, v5.2a                                             11/1/91
  465.  
  466.                          m16.lib, and detach.osl (detach object module);
  467.                          changes.lib: Changes to library routines.
  468.           libl52.lzh     The following libraries and object modules that
  469.                          use large code&data and 32-bit ints: cl.lib,
  470.                          ml.lib, and detach.oll (detach object module);
  471.                          changes.lib: Changes to library routines.
  472.           m8_52.lzh      68881 math libraries
  473.           ma_52.lzh      Amiga IEEE math libraries
  474.           mf_52.lzh      Amiga FFP math libraries
  475.           s_52.lzh       Screen libraries
  476.  
  477.      2.4 Disk 4 contents
  478.           204fd.lzh      v2.04 FD files from Commodore-Amiga
  479.           204inc_h.lzh   v2.04 C include files from Commodore-Amiga
  480.           204inc_i.lzh   v2.04 assembler include files from Commodore-Amiga
  481.           204lib.lzh     v2.04 object libraries from Commodore-Amiga
  482.           incl52.lzh     Aztec C include files
  483.  
  484.      2.5 Disk 5 contents
  485.           ami_ffp.lzh    Source to Amiga FFP math routines
  486.           ami_ieee.lzh   Source to Amiga IEEE math routines
  487.           amisup.lzh     Source to Amiga.lib-compatible routines
  488.           glue20.lzh     Source to glue routines
  489.           inp.lzh        Library generation support files, which go in the
  490.                          lib/inp directory
  491.           libsrc52.lzh   Library makefile, which go in the lib directory
  492.           m881.lzh       Source to 68881 math routines
  493.           misc.lzh       Source to files that go in the lib/misc directory
  494.           mx_ieee.lzh    Source to Manx IEEE math routines
  495.           scr.lzh        Source to screen library routines
  496.           stdio.lzh      Source to routines that go in lib/stdio
  497.           stdlib.lzh     Source to routines that go in lib/stdlib
  498.           string.lzh     Source to routines that go in lib/string
  499.           sysio.lzh      Source to routines that go in lib/sysio
  500.           time.lzh       Source to routines that go in lib/time
  501.  
  502.  
  503.      3. New features
  504.  
  505.        This section describes functional changes that have been made since
  506.      the v5.0d release.. A set of "changes" files are also provided that
  507.      contain a complete list of all changes, bug fixes as well as
  508.      functional changes, that have been made since v5.0d; for example,
  509.      bin/changes.cc describes compiler changes, bin/changes.describes
  510.      assembler changes, include/changes.inc describes include file changes,
  511.      and lib/changes.lib describes library changes.
  512.  
  513.        The Additional Documentation section that follows this section
  514.      describes other features of v5.2 that aren't described in the manual.
  515.      For the most part, these are features that were introduced to earlier
  516.      versions of Aztec C, versions that came out since the manual was last
  517.      printed.
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.                                 page 8
  528.  
  529.  
  530. Aztec C/Amiga, v5.2a                                             11/1/91
  531.  
  532.      3.1 Compiler changes
  533.  
  534.      3.1.1 #pragmas can define a function's return register
  535.  
  536.        Pragmas for "registerized" functions, such as the amicall pragma,
  537.      can now define the register in which the function returns its value.
  538.      The register name is specified just before the function name. If a
  539.      return register isn't specified, it defaults to d0.
  540.  
  541.        For example, the following amicall pragma defines a function named
  542.      myfunc that returns its value in a0:
  543.                
  544.           #pragma amicall (mybase, 0x38, a0 myfunc(d0, d1))
  545.  
  546.      3.1.2 Change to format of precompiled header file
  547.  
  548.        The format of the precompiled header file has been changed. Thus you
  549.      must recreate your precompiled header files before using v5.2 of Aztec
  550.      C.
  551.  
  552.      3.1.3 Can't make registerized call to functions that use A4 or A5
  553.  
  554.        The compiler no longer allows registerized calls to functions that
  555.      are passed arguments in register A4 or A5, since these registers are
  556.      used for other purposes (A4 is the small model support register and A5
  557.      is the frame pointer). Such functions will be accessed via "glue"
  558.      routines that are in the c libraries (c.lib, etc).
  559.  
  560.        The mapfd program that generates amicall pragmas from the Commodore
  561.      fd's has also been changed to support this.
  562.  
  563.      3.1.4 New compiler option: -mp
  564.  
  565.        A new option, -mp has been added to the compiler. This option
  566.      prevents the compiler from "padding" structures that only contain
  567.      chars or arrays of chars.
  568.  
  569.        This option is provided for SAS compatibility, and it also may be
  570.      occasionally useful in its own right.
  571.  
  572.      3.1.5 Keywords supported with #if statements
  573.  
  574.        The compiler now supports keywords within #if statements, except
  575.      when the -pa option has been used to enable the "strict ANSI" mode.
  576.      This allows things such as "#if sizeof(int)==2".
  577.  
  578.      3.1.6 Restricting access to data in code segments
  579.  
  580.        When the -MM option is used to force data into the code segment, the
  581.      compiler will now treat such data as "const" and report an error when
  582.      an attempt is made to assign a value to such data.
  583.  
  584.      3.1.7 New compiler option: -wc
  585.  
  586.        A new option, -wc, has been added to the compiler. It disables
  587.      "Invalid ptr/ptr conversion" error messages when the two pointers are
  588.      of type (char *) and (unsigned char *).
  589.  
  590.  
  591.  
  592.  
  593.                                 page 9
  594.  
  595.  
  596. Aztec C/Amiga, v5.2a                                             11/1/91
  597.  
  598.      3.1.8 Preserving register A6
  599.  
  600.        The compiler now automatically preserves register A6 on function
  601.      entry and exit, whether or not the -r6 option is used.
  602.  
  603.      3.2 Assembler changes
  604.  
  605.      3.2.1 Default width for "dc" directive
  606.  
  607.        When used without a size extension, the "dc" directive defaults to
  608.      "dc.w".
  609.  
  610.      3.3 Changes to other programs
  611.  
  612.      3.3.1 Changes to the mapfd program
  613.  
  614.        The new -4 and -5 options cause mapfd to generate pragmas for
  615.      functions that are passed arguments in A4 or A5. By default, mapfd
  616.      will not generate pragmas for such functions.
  617.  
  618.      3.4 Library changes
  619.  
  620.      3.4.1 Changes to setlocale()
  621.  
  622.        The setlocale() function was changed so that its second argument can
  623.      be NULL to fetch the current locale.
  624.  
  625.      3.4.2 Changes to glue routines
  626.  
  627.        Changes have been made to the glue routines that are in the c
  628.      libraries. Most of the changes fall into one of the following
  629.      categories:
  630.             -  Added new glue routines for new resident library functions;
  631.             -  Added new glue routines for amiga.lib functions, such as the
  632.                "Tags" functions;
  633.             -  Deleted glue routines for resident library functions that
  634.                are obsolete or private.
  635.  
  636.        For details, see the "lib/changes.lib" file.
  637.  
  638.      3.4.3 New mf.lib functions
  639.  
  640.        The following functions have been added to the Amiga FFP math
  641.      libraries (mf.lib, etc):
  642.           
  643.           atan2
  644.           frexp
  645.           ldexp
  646.  
  647.      3.4.4 Changes to ldexp()
  648.  
  649.        ldexp() was changed in all math libraries to return 0 on underflow
  650.      instead of -HUGEVAL.
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.                                page 10
  660.  
  661.  
  662. Aztec C/Amiga, v5.2a                                             11/1/91
  663.  
  664.      3.4.5 The TZ environment variable
  665.  
  666.        The manual's description of the gmtime() function does not report
  667.      that gmtime() makes use of an environment variable named TZ. This
  668.      variable has the following form:
  669.           
  670.           mset TZ=EST5EDT
  671.  
  672.      where
  673.           EST    is the normal code for the time zone;
  674.           5      is the offset of the time zone from GMT;
  675.           EDT    is the code for the time zone during daylight savings
  676.                  time.
  677.  
  678.      3.4.6 Changes to segload()
  679.  
  680.        The segload() function was changed to report the result of a segment
  681.      load. It returns 1 if the load was successful and 0 if not.
  682.  
  683.        The .segload() function that is called to automatically load a
  684.      segment was changed to display a recoverable alert if a load fails.
  685.  
  686.      3.4.7 Changes to scdir()
  687.  
  688.        The scdir() function was changed. When passed a NULL argument, it
  689.      resets its internal state. This allows scanning to change from one
  690.      pattern to another before all files that match a pattern have been
  691.      reported.
  692.  
  693.      3.4.8 Changes to format()
  694.  
  695.        The format() function was changed. Its calling sequence is now:
  696.           
  697.           int format(int (*func)(), char *fmt, ...)
  698.  
  699.      where "..." are the arguments that are to be accessed during the
  700.      scanning of the format string, instead of a va_list pointer to the
  701.      arguments. This change makes format() compatible with the v3.6a
  702.      format(), and with the format() that is provided with the Aztec
  703.      package for other 68k systems.
  704.  
  705.      3.4.9 New _format() function
  706.  
  707.        A new function, _format(), has been added. It has the following
  708.      calling sequence:
  709.           
  710.           int _format(FILE *fp, char *fmt, va_list varg);
  711.  
  712.      It's like format(), except fp points to the stream to which characters
  713.      are to be written, and varg points to a vararg list of the arguments
  714.      to be accessed during the scanning of the format string.
  715.  
  716.      3.4.10 Changes to the low-level I/O functions
  717.  
  718.        In order to allow you to give your own routines that match those of
  719.      Aztec unbuffered I/O routines, the following changes have been made to
  720.      c library routines:
  721.  
  722.  
  723.  
  724.  
  725.                                page 11
  726.  
  727.  
  728. Aztec C/Amiga, v5.2a                                             11/1/91
  729.  
  730.        -  The names of all the unbuffered I/O routines in the c libraries
  731.           (c.lib, etc) have been changed by prepending them with an
  732.           underscore;
  733.        -  The standard I/O routines have been changed to call the
  734.           unbuffered I/O routines using their new names;
  735.        -  New functions have been added to the c libraries that have the
  736.           same names as the original unbuffered I/O routines, and that
  737.           simply call the new unbuffered I/O routines.
  738.  
  739.      3.5 Include file changes
  740.  
  741.      3.5.1 Commodore's v2.04 and v1.3 include files
  742.  
  743.        When installing Aztec C on a hard disk, the installation program
  744.      installs the Aztec v5.2 include files and Commodore's v2.04 include
  745.      files. In this case, the file functions.h defines prototypes and
  746.      amicall pragmas for all of Commodore's v2.04 functions. Programs
  747.      created using these functions will run on the v1.3 Amiga OS, if they
  748.      don't call any v2.0-specific functions. If you want to create programs
  749.      that you can be sure don't use any v2.0-specific functions, just
  750.      include func1_3.h instead of functions.h, since func1_3.h contains
  751.      prototypes and pragmas for just the v1.3 Commodore functions; you
  752.      don't have to use any other v1.3 Commodore include files, because the
  753.      structures, defines, and so on that are in the v2.04 include files are
  754.      compatible with those in the v1.3 Commodore include files.
  755.  
  756.        When installing Aztec C on a floppy disk, the installation program
  757.      installs the Aztec v5.2 include files and Commodore's v1.3 include
  758.      files. The only reason for using the v1.3 include files instead of the
  759.      v2.04 was that the v2.04 include files took up too much of the floppy
  760.      disk's limited disk space.
  761.  
  762.      3.5.2 Stripping out include file comments
  763.  
  764.        There are a couple of ways to speed up the compiler's processing of
  765.      include files. One is to precompile the include files, using the
  766.      compiler's -ho and hi options. These options are described in the
  767.      Aztec manual.
  768.  
  769.        Another way is to strip out the comments that are in the Amiga-
  770.      specific include files, using the stripc program. The calling sequence
  771.      for stripc has the form
  772.           
  773.           stripc <infile> <outfile>
  774.  
  775.      where <infile> is the name of the file that contains comments, and
  776.      <outfile> is the name of the file where you want the uncommented code
  777.      to be placed.
  778.  
  779.      The script file 'make-strip' in the include directory will strip the
  780.      comments from all include files; it will place them in a subdirectory
  781.      named 'incl_strip' beneath the root Aztec directory.
  782.  
  783.      3.6 The mapfd program
  784.  
  785.        The 'mapfd' program generates pragmas and glue routines from the
  786.      Commodore-provided FD files that describe the calling sequences of
  787.      Commodore's resident library routines. You probably won't have a need
  788.  
  789.  
  790.  
  791.                                page 12
  792.  
  793.  
  794. Aztec C/Amiga, v5.2a                                             11/1/91
  795.  
  796.      to use mapfd, since we've already generated the pragma files and glue
  797.      routines for the resident library routines, but if you do need it,
  798.      it's here. mapfd has the following syntax:
  799.           
  800.           mapfd [-g -l -p -e <extension> -o <outfile>] infile
  801.  
  802.      where the parameters are as follows:
  803.           infile Name of the file containing the FD statements.
  804.           -o <outfile>
  805.                  Write pragmas to <outfile>. By default, pragmas are
  806.                  written to a file whose name is derived from the input
  807.                  file name, by changing the extension to '.h';
  808.           -l     Generate Lattice (SAS)-style pragmas;
  809.           -p     Process 'private' functions;
  810.           -g     Generate assembly language glue routines;
  811.           -e <ext>
  812.                  Set extension of glue routine files to '.a68'
  813.                  (defaults to '.a68');
  814.           -4     Generate pragmas for functions that take parameters in
  815.                  register A4. By default, mapfd does not generate pragmas
  816.                  for such functions, since usage of A4 can conflict with
  817.                  the use of A4 by programs that use a small code or small
  818.                  data memory model.
  819.           -5     Generate pragmas for functions that take parameters in
  820.                  register A5. By default, mapfd does not generate pragmas
  821.                  for such functions, since usage of A5 can conflict with a
  822.                  program's use of A5 as a frame pointer.
  823.  
  824.        The features of mapfd that are new in the 5.2 release are:
  825.             -  mapfd wasn't previously provided on the distribution disks;
  826.             -  The -4 and -5 options are new;
  827.             -  This documentation is new.
  828.  
  829.  
  830.      4. Additional documentation
  831.  
  832.        The following paragraphs describe features that are not described in
  833.      the manual.
  834.  
  835.      4.1 Compiler
  836.  
  837.      4.1.1 The -t compiler option
  838.  
  839.        The -t option has been added to specify the maximum number of base
  840.      names defined in amicall/syscall #pragmas.  The syntax of this option
  841.      is:
  842.           
  843.           -t num_entries
  844.  
  845.      where num_entries is the maximum number of base names entries allowed.
  846.  
  847.        The compiler will give an error message if the number of base names
  848.      encountered in the program exceeds the number specified with -t (or
  849.      the default value if -t is not used).  The default value is 50.
  850.  
  851.  
  852.  
  853.  
  854.  
  855.  
  856.  
  857.                                page 13
  858.  
  859.  
  860. Aztec C/Amiga, v5.2a                                             11/1/91
  861.  
  862.      4.1.2 C++ style comments
  863.  
  864.        C++ style comments are now supported. These comments consist of two
  865.      forward slashes '//', and the comment is considered to go to the end
  866.      of the current line (that is, to the newline at the end of the line).
  867.  
  868.        For example:
  869.           main ()
  870.           {
  871.                printf ("MS = %d\n", msval);  // report value of MS
  872.                printf ("HA = %d\n", haval);  // report value of HA
  873.           }
  874.  
  875.      4.1.3 Register A6 usage and the -R6 compiler option
  876.  
  877.        The compiler by default now only uses register A6 for
  878.      amicall/syscall #pragmas. This usually results in better code
  879.      generation, since A6 doesn't need to be continually pushed and popped
  880.      when #pragma calls are done. In this default mode the compiler never
  881.      saves the A6 register.
  882.  
  883.        A new option -r6 has been added to the compiler, which allows the
  884.      compiler to use A6 as register variables. A6 is also always guaranteed
  885.      to be preserved. This option should be used if you are generating code
  886.      which needs A6 to be preserved. Also, if your code makes few #pragma
  887.      calls this option may improve code generation.
  888.  
  889.        When a function returns, A6 always has the value it had on entry to
  890.      the function.
  891.  
  892.      4.1.4 The -MR compiler option
  893.  
  894.        The -mr option forces the compiler to use more registers as
  895.      temporary registers (which in turn reduces the number of registers
  896.      available for register variables). This option should only be used to
  897.      work around an "Expression too complex" error message.
  898.  
  899.      4.2 Assembler
  900.  
  901.      4.2.1 movem optimizations
  902.  
  903.        The assembler optimizes out 0-register movem operations.
  904.  
  905.      4.2.2 The -W assembler option
  906.  
  907.        A -w switch has been added to the assembler, which turns on
  908.      optimization of 1 register movem's into move instructions.
  909.  
  910.      4.3 SDB
  911.  
  912.      4.3.1 The -S option
  913.  
  914.        SDB no longer requires the use of the -s option for programs with
  915.      source in multiple directories. It will instead attempt to use the
  916.      path information used to compile the source code. i.e. if the source
  917.      was compiled as /front/foobar.c, then SDB will look for the file
  918.      'foobar.c' in the /front directory. This behavior may be overridden by
  919.      defining explicit search directories using the -s option.
  920.  
  921.  
  922.  
  923.                                page 14
  924.  
  925.  
  926. Aztec C/Amiga, v5.2a                                             11/1/91
  927.  
  928.      4.3.2 SDB and SDBF
  929.  
  930.        There are now two versions of SDB - SDB and SDBF.  The two programs
  931.      are identical except in the handling of floating point. SDB is
  932.      designed for use with code compiled for use with the m.lib (MANX
  933.      IEEE), ma.lib (AMIGA IEEE), or m8.lib (68881 coprocessor) libraries.
  934.      SDBF should be used with programs compiled with mf.lib (Motorola Fast
  935.      Floating Point, FPP).
  936.  
  937.      4.4 Environment Variables
  938.  
  939.        The compiler, assembler, and linker now use the standard Amiga-DOS
  940.      environment ENV: instead of the proprietary Manx environment that was
  941.      previously used by manx tools.  This change was done primarily to
  942.      improve compatability with v2.0 of AmigaDOS.
  943.  
  944.        Aztec tools now look in a subdirectory beneath ENV: called     
  945.      'MANX' for the individual environment variables. The new utility
  946.      'mset' should be used to create environment variables for use with
  947.      Aztec C, since  mset automatically creates the 'MANX' directory if it
  948.      does not already exist.  mset uses syntax is identical to the that of
  949.      the old 'set' command.
  950.  
  951.        The setenv() and getenv() library calls now use ENV: as well. To
  952.      access standard environment variables, simply use:
  953.           
  954.           status = setenv ("VARNAME", "NEW_VALUE");
  955.  
  956.      and
  957.           val = getenv ("VARNAME");
  958.  
  959.        Note that setenv() now returns non-zero if it fails, and zero if
  960.      successful. No value was returned by setenv() under 5.0a.  To set and
  961.      access an environment variable for use by Aztec tools, you should use:
  962.           
  963.           status = setenv ("MANX/VARNAME", "NEW_VALUE");
  964.  
  965.      and
  966.           
  967.           val = getenv ("MANX/VARNAME");
  968.  
  969.      4.5 Libraries
  970.  
  971.        Four new functions have been added to the library: stricmp(),
  972.      strnicmp(), strlwr(), and strupr().
  973.  
  974.      4.5.1 The stricmp() function
  975.           
  976.           int stricmp(const char *s1, const char *s2);
  977.  
  978.        This function is identical to the strcmp() function, with the
  979.      exception that the comparison between the two strings is case
  980.      insensitive (i.e., "foobar" and "FooBar" are considered equivalent to
  981.      stricmp()).
  982.  
  983.      4.5.2 The strnicmp() function
  984.           
  985.           int strnicmp(const char *s1, const char *s2, size_t n);
  986.  
  987.  
  988.  
  989.                                page 15
  990.  
  991.  
  992. Aztec C/Amiga, v5.2a                                             11/1/91
  993.  
  994.        This function is identical to the strncmp() function, with the
  995.      exception that the comparison between the two strings is case
  996.      insensitive (i.e., "foobar" and "FooBar" are considered equivalent to
  997.      strnicmp().
  998.  
  999.      4.5.3 The strlwr() function
  1000.           
  1001.           char *strlwr (char *str);
  1002.  
  1003.        This function converts the string pointed to by 'str' into all lower
  1004.      case. All non alphabetic characters within the string are left as they
  1005.      are. A pointer to the the converted string is returned by strlwr.
  1006.      Note that the original string pointed to 'str' is destroyed by
  1007.      strlwr().
  1008.  
  1009.      4.5.4 The strupr() function
  1010.           
  1011.           void strupr (char *str);
  1012.  
  1013.        This function converts the string pointed to by 'str' into all upper
  1014.      case. All non alphabetic characters within the string are not
  1015.      affected. A pointer to the the converted string is returned by strlwr.
  1016.      Note that the original string pointed to 'str' is destroyed by
  1017.      strlwr().
  1018.  
  1019.      4.6 Stack usage
  1020.  
  1021.        The compiler requires a minimum of 8K of stack, especially if you
  1022.      are generating/using precompiled header files. If a smaller stack is
  1023.      used the compiler may guru (if you're lucky).
  1024.  
  1025.      4.7 Supported #pragma syntaxes
  1026.  
  1027.        An undocumented feature in 5.0 is support for the Lattice format for
  1028.      in-line calling of amiga resident library functions, through
  1029.      #pragma's. This allows you to use most #include files designed for
  1030.      Lattice without modification.
  1031.  
  1032.      4.8 ARexx Support
  1033.  
  1034.        We do not at this time provide ARexx scripts for use with the
  1035.      compiler's QuikFix option.
  1036.  
  1037.      4.9 ARP compatibility
  1038.  
  1039.        ARP users should note that the Arp set command will no longer work
  1040.      with Aztec tools due to the fact that 5.0b now uses the AmigaDOS
  1041.      environment. Manx 5.x compatable ARP bindings are included in the arp
  1042.      directory (these are unofficial bindings, but seem to work well 8-),
  1043.      in addition to the official ARP files.
  1044.  
  1045.      4.10 Version 3.6a Compatibility notes
  1046.  
  1047.        Several important things have changed between the 3.6a and 5.0d
  1048.      versions. The most important differences are:
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.                                page 16
  1056.  
  1057.  
  1058. Aztec C/Amiga, v5.2a                                             11/1/91
  1059.  
  1060.      4.10.1 Compiler options
  1061.  
  1062.        Almost all compiler options have changed in version 5.0, which means
  1063.      you will eventually have to translate your script and makefiles to use
  1064.      the new options.  However, we have provided a 'compatability-switch'
  1065.      which will allow you to use the old  options.  This switch is '-3'.
  1066.      Any 3.6a compiler options you have MUST come after a '-3' option for
  1067.      them to be recognized properly.  For example, the compile line:
  1068.           
  1069.           cc -n +c +d test.c
  1070.  
  1071.        Should be changed to:
  1072.           
  1073.           cc -3 -n +c +d test.c
  1074.  
  1075.        To avoid having to change all your makefiles, you may optionally set
  1076.      the '-3' option using the CCOPTS environment variable.  The command:
  1077.           
  1078.           set CCOPTS=-3
  1079.  
  1080.        will in effect set the default option parsing to 3.6a syntax.  Note
  1081.      that if you do use the -3 option, any 5.0d options must be prefixed
  1082.      with '-5'.  The '-5' and '-3' options may be mixed freely on the
  1083.      command line.  See the compiler reference documentation for details.
  1084.  
  1085.      4.10.2 ANSI Compiler changes
  1086.  
  1087.        The way the compiler handles expressions and other language rules
  1088.      has changed somewhat from version 3.6a in order to be compatible with
  1089.      the proposed ANSI standard.  These changes should not affect most
  1090.      programs, but will change the behavior of some user code.  For maximum
  1091.      source compatability with 3.6a, you should use the '-k' compiler
  1092.      option. This forces the compiler to evaluate C expresions using
  1093.      Kernighan & Ritchie rules rather than ANSI rules.  The -k option is
  1094.      recognized both under -5 and -3.  To achive maximum  3.6a
  1095.      compatability, it may be desirable to set CCOPTS as follows:
  1096.           
  1097.           set "CCOPTS=-3 -k"
  1098.  
  1099.        The compiler will give the error "can't take address of
  1100.      register class" for the following type of code:
  1101.           
  1102.           funky_func ()
  1103.           {
  1104.                register char array[30];
  1105.                call (array);
  1106.           }
  1107.  
  1108.        Under previous versions of the compiler, the 'register' modifier
  1109.      would simply be ignored.  However, ANSI requires that taking the
  1110.      address of a 'register' class object is always in error, even if the
  1111.      object actually is placed in addressable memory.  For arrays this
  1112.      effectively means that you cannot access any elements within the
  1113.      array, or use the array in any useful manner at all.
  1114.  
  1115.        The fix for this is to remove the 'register' modifier from the array
  1116.      declaration.
  1117.  
  1118.  
  1119.  
  1120.  
  1121.                                page 17
  1122.  
  1123.  
  1124. Aztec C/Amiga, v5.2a                                             11/1/91
  1125.  
  1126.      4.10.3 ANSI library/header changes
  1127.  
  1128.        Due to space limitations, we are not able to provide fully 3.6a
  1129.      compatabile libraries along with the new ANSI compatable libraries.
  1130.      This should not be a problem with most programs since the new
  1131.      libraries are mostly the same as those under 3.6a.  However, some code
  1132.      will still break.  Things to look out for include:
  1133.        -  agetc() and aputc() are gone.  They may be defined as:
  1134.                #define agetc() putc()
  1135.                #define aputc(x,file) putc (x,file)
  1136.        -  The size returned by the sizeof operator is now equivalent to the
  1137.           new ANSI type 'size_t', as well as the result of pointer
  1138.           subtraction. Since 'size_t' is typedef'd to be of type 'unsigned
  1139.           long', and 3.6a used 'unsigned int' for these operations, code
  1140.           which depends on this will break. Notable functions which require
  1141.           arguments of type 'size_t' include malloc() and fread(). If you
  1142.           are using 16-bit  integers, you MUST cast the values passed to
  1143.           malloc() and similar functions to type 'size_t' for the call to
  1144.           work. For example, to allocate 50 bytes you should say:
  1145.                
  1146.                cptr = malloc ((size_t)50);
  1147.           
  1148.           The best way to avoid problems with these is to always include
  1149.           the appropriate header files. The most commonly used ones are
  1150.           stdio.h for standard I/O, string.h for string operations, and
  1151.           stdlib.h for miscellaneous operations such as memory allocation.
  1152.        -  The module 'heapmem.o' is no longer included with the package.
  1153.           All heap mangement, including the realloc() function, is
  1154.           contained within the normal c.lib library.
  1155.  
  1156.      4.10.4 Calling Amiga functions
  1157.  
  1158.         By default, if you #include the file functions.h, the compiler will
  1159.      generate inline calls to Amiga resident library routines, rather than
  1160.      calling an assembly language stub.  This method is generally smaller
  1161.      and faster than using stub routines. If for some reason you wish to
  1162.      use the old stubs and want to compile with functions.h, you should
  1163.      fist define the pre-processor macro __NO_PRAGMAS before you include
  1164.      functions.h.  This should be done like this:
  1165.                
  1166.           #define __NO_PRAGMAS
  1167.           #include <functions.h>
  1168.  
  1169.        If you are not compiling with functions.h, then you don't need to do
  1170.      anything - the linker will automatically pull in the appropriate stub
  1171.      routines in from the standard C library.
  1172.  
  1173.      4.10.5 Old object code/libraries
  1174.  
  1175.        Version 5.0d is NOT object code or library compatable with
  1176.      version 3.6a of Aztec C or below.  The reason for this is that the
  1177.      default register usage conventions of the compiler have been changed
  1178.      from that of previous versions.  This means that all source code must
  1179.      be re-compiled for use with 5.0d. In addition, assembly code called by
  1180.      C must be changed to reflect the new register conventions.  5.0d is
  1181.      object-compatible with previous 5.0 versions however (5.0a, 5.0b, and
  1182.      5.0c).
  1183.  
  1184.  
  1185.  
  1186.  
  1187.                                page 18
  1188.  
  1189.  
  1190. Aztec C/Amiga, v5.2a                                             11/1/91
  1191.  
  1192.      4.10.6 Default integer size
  1193.  
  1194.        The default integer size has been changed from 16-bits to 32-bits.
  1195.      This was done to make it easier to port code from other systems, as
  1196.      well as to minimize crashing in 'beginner' code.  Because of this, the
  1197.      library naming conventions have also changed. The libraries now map in
  1198.      this fashion:
  1199.           3.6a      |  5.0d
  1200.           ---------------------
  1201.           c.lib     |   c16.lib    small code/small data 16-bit ints
  1202.           cl.lib    |  cl16.lib    large code/large data 16-bit ints
  1203.           cl32.lib  |    cl.lib    large code/large data 32-bit ints
  1204.           c32.lib   |     c.lib    small code/small data 32-bit ints
  1205.  
  1206.      4.10.7 Default math libraries
  1207.  
  1208.        A new math library, based on Manx IEEE floating point, has been
  1209.      added. This library is the most accurate of all the libraries, and is
  1210.      now set to be the default.  The libraries from 3.6a to 5.0b map in
  1211.      this fashion with regards to naming conventions:
  1212.           3.6a    |  5.0b
  1213.           ---------------------
  1214.             ---   |  m.lib         Manx IEEE floating point
  1215.           ma.lib  |  ma.lib        Amiga IEEE floating point
  1216.           m.lib   |  mf.lib        Motorola FFP floating point
  1217.           m8.lib  |  m8.lib        68881 floating point
  1218.  
  1219.      4.10.8 Bitfields
  1220.  
  1221.        Bitfields may only be of type 'int' or 'unsigned int' in version
  1222.      5.0b. Previous versions also allowed bitfields to be of type 'short'
  1223.      and 'unsigned short'.
  1224.  
  1225.      4.10.9 functions.h
  1226.  
  1227.        The declarations in the functions.h header file now include ANSI
  1228.      prototyping of Amiga function arguments, in addition to declaring
  1229.      function return types. This can cause a large number of ptr/ptr and
  1230.      ptr/int conversion warnings to be generated in certain types of
  1231.      programs.  If you receive a large number of these types of warnings in
  1232.      code which includes functions.h and do not wish to make the necessary
  1233.      corrections, you will have to remove the inclusion of functions.h and
  1234.      declare function return types yourself. The majority of problems will
  1235.      most likely be with messages and I/O requests. In most cases warnings
  1236.      in these areas can be cured with a simple cast in the function call.
  1237.      For example:
  1238.           
  1239.           AbortIO ((struct IORequest *)req);
  1240.           ReplyMsg ((struct Message *)msg);
  1241.  
  1242.        Simple casts of this type should remove 90%-95% of warnings due to
  1243.      prototypes in typical code.
  1244.  
  1245.  
  1246.  
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.  
  1253.                                page 19
  1254.  
  1255.